package dataStructure.Sort;

import java.util.Arrays;

public class SelectionSort {
    /**
     * 选择排序
     * 每轮选择最小元素交换到左侧已经排好序的队列中
     * 冒泡属于稳定排序算法,选择排序属于不稳定排序算法
     *
     * @param nums 要排序的数组
     */
    public static void selectionSort(int[] nums) {
        for (int j = 0; j < nums.length - 1; j++) {
            //获取最小值
            int minVal = nums[j];
            int minIndex = j;
            for (int i = j + 1; i < nums.length; i++) {
                if (nums[i] < minVal) {
                    minIndex = i;
                    minVal = nums[i];
                }
            }

            //将最小值放到左侧已经排好序的序列中
            nums[minIndex] = nums[j];
            nums[j] = minVal;
        }
    }

    public static void main(String[] args) {
        int[] nums = new int[]{1, 10, 2, 7, 5, 4, 1};
        selectionSort(nums);
        System.out.println(Arrays.toString(nums));
    }
}
